/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package clasificador.genetico;

import java.util.ArrayList;
import utils.Weighted;

/**
 *
 * @author e237573
 */
public class PoliticaSeleccion2<Genotipo> implements PoliticaSeleccion<Genotipo> {
    private double propInicio;
    private int size;
    
    public PoliticaSeleccion2(int size, double propInicio)
    {
        this.propInicio = propInicio;
        this.size = size;
    }
    
    @Override
    public void seleccionar(ArrayList<Weighted<Genotipo>> poblacion) {        
        ArrayList<Weighted<Genotipo>> seleccionados = new ArrayList<>(size);
        int nInicio = (int)(size*propInicio);
        int restantes = size-nInicio;
        int salto = (poblacion.size()-nInicio)/restantes;
        for(int i = 0; i < nInicio; i++)
        {
            seleccionados.add(poblacion.get(i));
        }
        for(int i = nInicio; i < poblacion.size(); i+=salto)
        {
            seleccionados.add(poblacion.get(i));
        }
        poblacion.clear();
        poblacion.addAll(seleccionados);        
    }
    
    
}
